
using System;
using System.Text;
using NuevoGenNHibernate.CEN.Ebay;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Criterion;
using NHibernate.Exceptions;
using NuevoGenNHibernate.EN.Ebay;
using NuevoGenNHibernate.Exceptions;

namespace NuevoGenNHibernate.CAD.Ebay
{
public partial class VotacionCAD : BasicCAD, IVotacionCAD
{
public VotacionCAD() : base ()
{
}

public VotacionCAD(ISession sessionAux) : base (sessionAux)
{
}



public VotacionEN ReadOIDDefault (int id_voto)
{
        VotacionEN votacionEN = null;

        try
        {
                SessionInitializeTransaction ();
                votacionEN = (VotacionEN)session.Get (typeof(VotacionEN), id_voto);
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in VotacionCAD.", ex);
        }


        finally
        {
                SessionClose ();
        }

        return votacionEN;
}


public int CrearVotacion (VotacionEN votacion)
{
        try
        {
                SessionInitializeTransaction ();
                if (votacion.Votante != null) {
                        votacion.Votante = (NuevoGenNHibernate.EN.Ebay.UsuarioEN)session.Load (typeof(NuevoGenNHibernate.EN.Ebay.UsuarioEN), votacion.Votante.Nick);

                        votacion.Votante.Votacion.Add (votacion);
                }
                if (votacion.Venta != null) {
                        votacion.Venta = (NuevoGenNHibernate.EN.Ebay.VentaEN)session.Load (typeof(NuevoGenNHibernate.EN.Ebay.VentaEN), votacion.Venta.Id_venta);

                        votacion.Venta.Votacion.Add (votacion);
                }

                session.Save (votacion);
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in VotacionCAD.", ex);
        }


        finally
        {
                SessionClose ();
        }

        return votacion.Id_voto;
}

public void ModificarVoto (VotacionEN votacion)
{
        try
        {
                SessionInitializeTransaction ();
                VotacionEN votacionEN = (VotacionEN)session.Load (typeof(VotacionEN), votacion.Id_voto);

                votacionEN.Valor = votacion.Valor;


                votacionEN.Comentario = votacion.Comentario;

                session.Update (votacionEN);
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in VotacionCAD.", ex);
        }


        finally
        {
                SessionClose ();
        }
}
public VotacionEN ReadOID (int id_voto)
{
        VotacionEN votacionEN = null;

        try
        {
                SessionInitializeTransaction ();
                votacionEN = (VotacionEN)session.Get (typeof(VotacionEN), id_voto);
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in VotacionCAD.", ex);
        }


        finally
        {
                SessionClose ();
        }

        return votacionEN;
}

public System.Collections.Generic.IList<VotacionEN> ReadAll (int first, int size)
{
        System.Collections.Generic.IList<VotacionEN> result = null;
        try
        {
                SessionInitializeTransaction ();
                if (size > 0)
                        result = session.CreateCriteria (typeof(VotacionEN)).
                                 SetFirstResult (first).SetMaxResults (size).List<VotacionEN>();
                else
                        result = session.CreateCriteria (typeof(VotacionEN)).List<VotacionEN>();
                SessionCommit ();
        }

        catch (Exception ex) {
                SessionRollBack ();
                if (ex is NuevoGenNHibernate.Exceptions.ModelException)
                        throw ex;
                throw new NuevoGenNHibernate.Exceptions.DataLayerException ("Error in VotacionCAD.", ex);
        }


        finally
        {
                SessionClose ();
        }

        return result;
}
}
}
